package com.shy.configs.common.utils;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JWTUtils {

    // 自定义秘钥
    public static final String JWT_SECRET = "W0fd3)iYp@uy34dsb/0OT";

    /**
     * 生成jwt
     *
     * @return
     */
    public static String createJWT(String data, int timeoutMinute) {
        //组装头数据
        Map<String, Object> header = new HashMap<>();
        header.put("alg", "HS256");
        header.put("typ", "JWT");

        //设置过期时间
        DateTime expireDate = DateUtil.offsetMinute(new Date(), timeoutMinute);

        //链式编程
        return JWT.create()
                //头部
                .withHeader(header)
                //过期时间
                .withExpiresAt(expireDate)
                //负载：自定义数据
                .withClaim("user", data)
                //签名：前面需要指定一个密钥
                .sign(Algorithm.HMAC256(JWT_SECRET));
    }

}